package cn.edu.sgu.www.mhxysy.service.prop;

import cn.edu.sgu.www.mhxysy.dto.prop.PropCategoryDTO;
import cn.edu.sgu.www.mhxysy.easyui.component.impl.Tree;
import cn.edu.sgu.www.mhxysy.vo.treegrid.PropCategoryTreeGrid;
import cn.edu.sgu.www.mhxysy.entity.prop.PropCategory;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

/**
 * @author 沐雨橙风ιε
 * @version 1.0
 */
public interface PropCategoryService {

	/**
	 * 上传图片
	 * @param file MultipartFile
	 * @return String
	 * @throws IOException uploadUtils.upload()方法抛出的异常
	 */
	String upload(MultipartFile file) throws IOException;

	/**
	 * 添加道具类型
	 * @param propCategoryDTO 道具类型信息
	 */
	@Transactional(rollbackFor = Exception.class)
	void insert(PropCategoryDTO propCategoryDTO);

	/**
	 * 通过ID删除道具类型
	 * @param id 道具类型ID
	 */
	@Transactional(rollbackFor = Exception.class)
	void deleteById(Integer id);

	/**
	 * 通过ID修改道具类型
	 * @param propCategoryDTO 道具类型信息
	 */
	void updateById(PropCategoryDTO propCategoryDTO);

	/**
	 * 通过ID修改道具图片
	 * @param id 道具类型ID
	 * @param image 图片地址
	 */
	void updateImageById(Integer id, String image);

	/**
	 * 通过ID查询道具分类
	 * @param id 道具类型ID
	 * @return PropCategory
	 */
	PropCategory selectById(Integer id);

	/**
	 * 获取道具类型树
	 * @return List<Tree<PropCategory>>
	 */
	List<Tree<PropCategory>> listTree();

	/**
	 * 获取道具类型树形表格
	 * @return List<TreeGrid>
	 */
	List<PropCategoryTreeGrid> listTreeGrid();

	/**
	 * 查询道具类型列表
	 * @param type 道具类型
	 * @return List<PropCategory>
	 */
	List<PropCategory> selectByType(Integer type);

	/**
	 * 获取道具分类树形组合表格
	 * @return List<PropCategoryTreeGrid>
	 */
	List<PropCategoryTreeGrid> listComboTreeGrid();

	/**
	 * 查询道具分类的主题表
	 * @param propId 道具类型ID
	 * @return List<PropCategory>
	 */
	List<PropCategory> selectThemes(Integer propId);
}